<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Import XML Sitra</title>
</head>
<body>
<?php
//
// Script d'import de fichiers XML Sitra dans une base MySQL
// Version : 0.2
// Auteur : Thomas Collet
// Date : 09/11/2008
// PHP 5.2.6 - extension php_xsl activée
// MySQL 6.0.4alpha
// Testé sur plateforme Windows donc path d'accès aux fichiers plus compliqués que sur Unix
//

// On définit le chemin d'accès aux fichiers XML Sitra
$path_to_xml_sitra_files = 'C:\www\lab.rhonetourisme\import_sitra\xml';

// On définit le chemin d'accès aux images sur le serveur Sitra
$path_to_images_sitra_files = 'ftp://FtpUserMultimedia:Sitra!FTP#@212.23.170.172/multimedia/imagesObtprincipales/';

// On définit le fichier XML Sitra simplifié temporaire
$tmp_simplified_sitra_file = $path_to_xml_sitra_files . '\tmp_simplified_sitra_file.xml';

// On définit le fichier XML Sitra simplifié temporaire pour MySQL 
$tmp_simplified_sitra_file_for_mysql = 'C:\\\\www\\\lab.rhonetourisme\\\import_sitra\\\xml\\\\tmp_simplified_sitra_file.xml';

// On se connecte à MySQL
$db = mysql_connect('localhost', 'root', '');
// On sélectionne la base
mysql_select_db('sitra',$db); 

// On liste les fichiers XML Sitra à importer et on les place dans un tableau
if ($handle = opendir($path_to_xml_sitra_files)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
			$xml_sitra_files[]=$file;
        }
    }
    closedir($handle);
}

// On boucle sur chaque fichier XML Sitra
foreach($xml_sitra_files as $xml_sitra_file){
	
	// Nouvelle instance
	$xslt = new XSLTProcessor();
	
	// Chargement du fichier XML
	$xml = new domDocument();
	$xml -> load('xml/' . $xml_sitra_file);
	
	// Chargement du fichier XSL
	$xsl = new domDocument();
	$xsl -> load('xslt/sitraxmlsimplifier.xsl');
	
	// Import de la feuille XSL
	$xslt -> importStylesheet($xsl);
	
	// On stocke le résultat de la transformation XSL dans un fichier temporaire tmp_simplified_sitra_file.xml	
	file_put_contents($tmp_simplified_sitra_file, $xslt -> transformToXml($xml));
	
	// On récupère le contenu du fichier temporaire tmp_simplified_sitra_file.xml
	$xml_source = file_get_contents($tmp_simplified_sitra_file, false);
	
	// On retire les balises vides
	$motif='`<[a-zA-Z0-9_]*/>`i';
	$xml_source_clean=preg_replace($motif, '', $xml_source);
	
	// On remet le code XML nettoyé des balises vides dans le fichier temporaire tmp_simplified_sitra_file.xml
	file_put_contents($tmp_simplified_sitra_file, $xml_source_clean);
	
	// On importe tout ça dans la BDD
	mysql_query("LOAD XML INFILE '" . $tmp_simplified_sitra_file_for_mysql . "' INTO TABLE objets ROWS identified by '<sitra_object>'") or die("Erreur MySQL : ".mysql_error());
	
	// Liste des objets importés
	$xml2 = new domDocument();
	$xml2 -> load($tmp_simplified_sitra_file);
	echo '<strong>' .$xml2 -> getElementsByTagName('titre')->item(0)->nodeValue . ' [' . $xml2 -> getElementsByTagName('identifiant_sitra')->item(0)->nodeValue . ']</strong> importé<br />';
	
	// Récupération des images principales
	$visuel_principal_url = $xml2 -> getElementsByTagName('visuel_principal')->item(0)->nodeValue;
	if ($visuel_principal_url){
		$visuel_principal_file_name = array_reverse(explode('/',$visuel_principal_url));
		$visuel_principal_file_name = $visuel_principal_file_name[0];
		copy($path_to_images_sitra_files . $visuel_principal_file_name,'images/' . $visuel_principal_file_name);
		echo 'avec son image principale ' . $visuel_principal_file_name . '<br />';
	}
	
}

// On supprime le fichier temporaire
unlink($tmp_simplified_sitra_file);

// On ferme la connexion à mysql
mysql_close(); 

?>
</body>
</html>